/**
 * 
 */
package com.alstudio.utils.account;

import java.util.ArrayList;

import com.alstudio.app.ALLocalEnv;
import com.alstudio.module.xmpp.protocol.xmpp.data.ALPhoto;
import com.alstudio.pojo.module.user.User;
import com.alstudio.pojo.module.user.Voiceintro;

/**
 * 保存，读取用户个人资料
 * 
 * @author alonso lee
 * 
 */
public class UserProfileManager {

	/**
	 * 读取个人资料
	 * 
	 * @return
	 */
	public static User loadMyProfile() {

		User v = new User();

		if (ALLocalEnv.getLocalEnv().getSpManager() != null) {
			// 设定是否是vip
			v.setIsVip(ALLocalEnv.getLocalEnv().getSpManager()
					.getBoolean("isVip", false));
			// 设定昵称
			v.setNick(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("myName", ""));
			// 设定电话号码
			v.setPhone(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("phone", ""));
			// 设定email
			v.setEmail(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("email", ""));
			// 设定性别
			v.setSex(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("sex", ""));
			// 设定jid
			v.setJid(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("jid", ""));
			// 设定省份
			v.setProvince(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("province", ""));
			// 设定城市
			v.setCity(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("city", ""));
			// 所在地
			v.setLocation(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("location", ""));
			// 设定生日
			v.setBirthday(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("birthday", ""));

			// 年龄
			v.setAge(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("age", ""));
			// 我的星座
			v.setConstellations(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("constellations", ""));
			// 设定签名
			v.setSignature(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("signature", ""));
			// 我的人气信息
			v.setPopularity(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("Popularity", ""));
			// 被收藏次数
			v.setCollectingnum(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("collectingnum", ""));
			// 身高
			v.setHeight(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("height", ""));
			// 体重
			v.setWeight(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("weight", ""));
			// 婚恋状况
			v.setMarriystatus(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("marriystatus", ""));
			// 获取勋章个数
			int count = ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("NumOfMedals", 0);
			// 获取勋章个数
			v.setNumOfMedals(count);
			// 这里获取勋章数组
			count = ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("NumofPic", 0);
			// 获取照片个数
			v.setNumofPic(count);
			// 装载我的照片列表
			v.setPhotos(loadMyPhoto(count));
			// 装载语音介绍
			v.setVoiceintro(loadVoiceintro());
			// 兴趣爱好个数
			count = ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("interestcount", 0);

			// 评价个数
			v.setAppraiseCount(""
					+ ALLocalEnv.getLocalEnv().getSpManager()
							.getInt("appraisecount", 0));

			// 魅力值
			v.setGlamour(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("glamour", ""));
			// v认证
			v.setVauthed(ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("vauthed", -1));
			// vip等级
			v.setViplevel(ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("viplevel", -1));
			// 我的积分
			v.setPoints(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("points", ""));
			// 我的金币
			v.setGold(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("gold", ""));
			// 主页特效
			// String homeEffects = ALLocalEnv.getLocalEnv().getSpManager()
			// .getString("homeEffects", "");
			// v.setHomeEffects(DataUtils.praseToAnimationType(homeEffects));

			v.setHalloffame(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("halloffame", ""));

			v.setGlobalGlmour(ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("meililevel", 0));

			v.setGlobalGreet(ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("nvshenlevel", 0));

			v.setvAuthPos(ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("vauthPos", -1));
			// 保存我的礼物
			// saveMyGifts(v.getGifts());

			/** 2013-6-5 */
			// 保存我的微博绑定状态 add by jinx
			v.setWeiBoIsBind(ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("weiboIsBind", 0));
			v.setWeibo_nick(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("weiboNick", ""));
			v.setWeibo_uid(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("weiboUid", ""));

			// 保存我的邮箱绑定状态
			v.setEmailIsBind(ALLocalEnv.getLocalEnv().getSpManager()
					.getInt("emailIsBind", 0));
			v.setEmail_addr(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("emailadd", ""));
			v.setEmail_pwd(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("emailpas", ""));
			v.setIconBackground(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("iconbackground", ""));

			// 通话价格
			v.setCallPrice(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("call_price", "0"));

		}

		return v;

	}

	/**
	 * 保存个人资料
	 * 
	 * @param v
	 */
	public static void saveMyProfile(User v) {

		if (ALLocalEnv.getLocalEnv().getSpManager() != null) {
			// 我的昵称
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("myName", v.getNick());
			// 电话
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("phone", v.getPhone());
			// email
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("email", v.getEmail());
			// 性别
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("sex", v.getSex());
			// jid
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("jid", v.getJid());
			// 所在省份
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("province", v.getProvince());
			// 所在城市
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("city", v.getCity());
			// 详细地址
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("location", v.getLocation());
			// 生日
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("birthday", v.getBirtyday());
			// 我的签名
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("signature", v.getSignature());
			// 我是否是vip
			ALLocalEnv.getLocalEnv().getSpManager()
					.putBoolean("isVip", v.isVip());
			// 保存勋章个数
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("NumOfMedals", v.getMedals().size());
			// 保存图片个数
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("NumofPic", v.getPhotos().size());
			// 我的人气信息
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("Popularity", v.getPopularity());
			// 我的星座
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("constellations", v.getConstellations());
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("collectingnum", v.getCollectingnum());
			// 身高
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("height", v.getHeight());
			// 体重
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("weight", v.getWeight());
			// 婚恋状况
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("marriystatus", v.getMarriystatus());
			// 保存评价个数
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("appraisecount", v.getAppraiseCount());

			// 年龄
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("age", v.getAge());

			// 保存我的图片
			saveMyPhotos(v.getPhotos());
			// 保存我的语音介绍文件
			saveVoiceintro(v.getVoiceintro());

			// 是否已经更新到服务器
			ALLocalEnv.getLocalEnv().getSpManager()
					.putBoolean("isSynchronized", v.isSynchronized());

			/**
			 * 2012-12-1 新协议新增字段
			 */
			// 访问量
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("visits", v.getVisits());
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("viplevel", v.getViplevel());

			// 我的积分
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("points", v.getPoint());
			// 我的金币
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("gold", v.getGold());

			// 主页特效
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("homeEffects", v.getHomeEffects() + "");

			// 保存v认证位置
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("vauthPos", v.getvAuthPos());

			/** 2013-6-5 */
			// 保存微博绑定状态
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("weiboIsBind", v.getWeiBoIsBind());
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("weiboNick", v.getWeibo_nick());
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("weiboUid", v.getWeibo_uid());

			// 保存邮箱状态
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("emailIsBind", v.getEmailIsBind());
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("emailadd", v.getEmail_addr());
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("emailpas", v.getEmail_pwd());
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("iconbackground", v.getIconBackground());

			// 荣誉个数
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("areaTitlesCount", v.getAreaTitles().size());

			// 保存区域总榜魅力，女神
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("areaGlobalGlmour", v.getAreaGlobalGlmour());
			ALLocalEnv.getLocalEnv().getSpManager()
					.putInt("areaGlobalGreet", v.getAreaGlobalGreet());

			// 呼叫价格
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("call_price", v.getCallPrice());

			ALLocalEnv.getLocalEnv().getSpManager().commit();
		}

	}

	/**
	 * 保存我的图片列表
	 * 
	 * @param l
	 *            图片列表
	 * @author Alonso Lee
	 */
	private static void saveMyPhotos(ArrayList<ALPhoto> l) {
		try {
			if (ALLocalEnv.getLocalEnv().getSpManager() != null) {
				ALPhoto p = null;
				int count = l.size();
				for (int i = 0; i < count; i++) {
					p = l.get(i);
					if (p == null)
						continue;
					ALLocalEnv
							.getLocalEnv()
							.getSpManager()
							.putString("picid_" + String.format("%02d", i),
									p.getPicFileid());
					ALLocalEnv
							.getLocalEnv()
							.getSpManager()
							.putString("picPath_" + String.format("%02d", i),
									p.getPicPath());
					ALLocalEnv
							.getLocalEnv()
							.getSpManager()
							.putString("Thumbid_" + String.format("%02d", i),
									p.getThumbnailFileid());
					ALLocalEnv
							.getLocalEnv()
							.getSpManager()
							.putString("ThumbPath_" + String.format("%02d", i),
									p.getThumbnailPath());
					ALLocalEnv
							.getLocalEnv()
							.getSpManager()
							.putBoolean("vauthed_" + String.format("%02d", i),
									p.isVauth());
				}

				ALLocalEnv.getLocalEnv().getSpManager().commit();
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 读取我的图片列表
	 * 
	 * @param count
	 *            图片个数
	 * @return 封装好的图片列表
	 * @author Alonso Lee
	 */
	private static ArrayList<ALPhoto> loadMyPhoto(int count) {
		ArrayList<ALPhoto> l = new ArrayList<ALPhoto>();
		ALPhoto p = null;

		for (int i = 0; i < count; i++) {
			p = new ALPhoto();
			p.setOrder(String.valueOf(i));
			p.setPicFileid(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("picid_" + String.format("%02d", i), ""));
			p.setPicPath(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("picPath_" + String.format("%02d", i), ""));
			p.setThumbnailFileid(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("Thumbid_" + String.format("%02d", i), ""));
			p.setThumbnailPath(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("ThumbPath_" + String.format("%02d", i), ""));
			p.setVauth(ALLocalEnv.getLocalEnv().getSpManager()
					.getBoolean("vauthed_" + String.format("%02d", i), false));
			l.add(p);
		}
		return l;
	}

	// 读取语音介绍
	private static Voiceintro loadVoiceintro() {
		Voiceintro v = new Voiceintro();
		v = loadVoiceIntro();
		return v;
	}

	// 存储语音介绍
	private static void saveVoiceintro(Voiceintro v) {
		saveVoiceIntro(v);
	}

	private static void saveVoiceIntro(Voiceintro v) {
		if (ALLocalEnv.getLocalEnv().getSpManager() != null) {
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("url", v.getVoiceFileUrl());
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("frep", v.getVoiceFreq() + "");
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("score", v.getVoiceScore() + "");
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("tim", v.getVoiceTimbre() + "");
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("tone", v.getVoiceTone() + "");
			ALLocalEnv.getLocalEnv().getSpManager()
					.putString("vol", v.getVoiceVol() + "");
			ALLocalEnv.getLocalEnv().getSpManager().commit();
		}
	}

	private static Voiceintro loadVoiceIntro() {
		Voiceintro v = new Voiceintro();
		if (ALLocalEnv.getLocalEnv().getSpManager() != null) {
			v.setVoiceFileUrl(ALLocalEnv.getLocalEnv().getSpManager()
					.getString("url", ""));
			v.setVoiceFreq(Integer.parseInt(ALLocalEnv.getLocalEnv()
					.getSpManager().getString("frep", "0")));
			v.setVoiceScore(Integer.parseInt(ALLocalEnv.getLocalEnv()
					.getSpManager().getString("score", "0")));
			// 静音状态缺省为关闭
			v.setVoiceTimbre(Integer.parseInt(ALLocalEnv.getLocalEnv()
					.getSpManager().getString("tim", "0")));
			v.setVoiceTone(Integer.parseInt(ALLocalEnv.getLocalEnv()
					.getSpManager().getString("tone", "0")));
			v.setVoiceVol(Integer.parseInt(ALLocalEnv.getLocalEnv()
					.getSpManager().getString("vol", "0")));
		}

		return v;
	}
}
